package com.blog4j.api.client;

import com.blog4j.api.config.FeignRequestInterceptor;
import com.blog4j.api.vo.ArticleDateCountVo;
import com.blog4j.api.vo.CategoryArticleCountVo;
import com.blog4j.api.vo.DeleteUserArticleVo;
import com.blog4j.api.vo.MonthActiveUserVo;
import com.blog4j.api.vo.MonthArticleViewsVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

/**
 * @author 98k灬
 * @version v1.0.0
 * @Description : 功能描述
 * @Create on : 2024/7/18 21:01
 **/
@FeignClient(value = "blog4j-article", path = "/feign", configuration = FeignRequestInterceptor.class)
public interface FeignArticle {
    /**
     * 删除用户名下的文章信息
     *
     * @param vo 用户集合
     */
    @PostMapping("/deleteUserArticle")
    void deleteUserArticle(@RequestBody DeleteUserArticleVo vo);

    /**
     * 文章个数
     *
     * @return 文章个数
     */
    @GetMapping("/articleCount")
    Integer articleCount();

    /**
     * 获取每天的文章数
     *
     * @return 每天的文章数
     */
    @GetMapping("/getArticleDateCount")
    List<ArticleDateCountVo> getArticleDateCount();

    /**
     * 获取本月活跃用户列表
     *
     * @return 本月活跃用户列表
     */
    @GetMapping("/getMonthActiveUserList")
    List<MonthActiveUserVo> getMonthActiveUserList();

    /**
     * 获取本月文章阅读量列表
     *
     * @return 本月文章阅读量列表
     */
    @GetMapping("/getMonthArticleViewsList")
    List<MonthArticleViewsVo> getMonthArticleViewsList();

    /**
     * 获取分类对应的文章数
     *
     * @return 分类对应的文章数
     */
    @GetMapping("/getCategoryArticleCount")
    List<CategoryArticleCountVo> getCategoryArticleCount();
}
